/**
 * 
 */
package com.wgo.bpot.common.transport.servicefacade;


import java.util.List;

import com.wgo.bpot.common.transport.exception.RematoException;
import com.wgo.bpot.common.transport.exception.db.DatabaseException;
import com.wgo.bpot.domain.common.CommandHistory;

/**
 * @author petterei  
 */
public interface LightServices {

	/**
	 * Initializes the database. Old content will be deleted.
	 * 
	 * @throws RematoException
	 * @throws DatabaseException
	 */
    public void createDbSchema(Class rootConceptClass) throws DatabaseException;
    
	public <T extends Object> T retrieveCompletePersistent(Class<T> facadeClass, Long identifier, int linkDepth);

	public <C> RetrieveResult<C> retrieveRootSystem(int linkDepth,Class<C> rootSystemApiClass);
	
    public SaveResult save(DispatchedModifyingMethodsTransport[] conceptsAndDispatchableMethods) ;

	public Long getServerTime();
	
	public List<CommandHistory> retrieveCommandHistory(Object persistent);
	
}
